/*//
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import components.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Roalnd
 */
public class ToernooiInschrijving {

    private int inschrijvingID;
    private Speler speler;
    private Toernooi toernooi;
    private boolean betaald;

    public int getInschrijvingID() {
        return inschrijvingID;
    }

    public void setInschrijvingID(int inschrijvingID) {
        this.inschrijvingID = inschrijvingID;
    }

    public Speler getSpeler() {
        return speler;
    }

    public void setSpeler(Speler speler) {
        this.speler = speler;
    }

    public Toernooi getToernooi() {
        return toernooi;
    }

    public void setToernooi(Toernooi toernooi) {
        this.toernooi = toernooi;
    }

    public boolean getBetaald() {
        return this.betaald;
    }

    public void setBetaald(boolean betaald) {
        this.betaald = betaald;
    }

    public static ToernooiInschrijving[] getToernooiInschrijving() {
        ArrayList<ToernooiInschrijving> inschrijving = new ArrayList<ToernooiInschrijving>();
        ToernooiInschrijving newToernooiInschrijving;
        String query = " SELECT * FROM ToernooiInschrijving";
        ResultSet result = Database.executeSelectQuery(query);
        try {
            while (result.next()) {
                newToernooiInschrijving = new ToernooiInschrijving();
                newToernooiInschrijving.setInschrijvingID(result.getInt("Inschrijvingid"));
                newToernooiInschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
                newToernooiInschrijving.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
                newToernooiInschrijving.setBetaald(result.getBoolean("betaald"));

                inschrijving.add(newToernooiInschrijving);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        ToernooiInschrijving[] inschrijvingArray = new ToernooiInschrijving[inschrijving.size()];
        for (int i = 0; i < inschrijving.size(); i++) {
            inschrijvingArray[i] = inschrijving.get(i);
        }
        return inschrijvingArray;
    }

    public static ToernooiInschrijving[] getToernooiInschrijvingen(Toernooi toernooi) {
        ArrayList<ToernooiInschrijving> inschrijving = new ArrayList<ToernooiInschrijving>();
        ToernooiInschrijving newToernooiInschrijving;
        String query = "SELECT * FROM ToernooiInschrijving WHERE toernooiid = '" + toernooi.getToernooiid() + "'";
        ResultSet result = Database.executeSelectQuery(query);
        try {
            while (result.next()) {
                newToernooiInschrijving = new ToernooiInschrijving();
                newToernooiInschrijving.setInschrijvingID(result.getInt("Inschrijvingid"));
                newToernooiInschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
                newToernooiInschrijving.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
                newToernooiInschrijving.setBetaald(result.getBoolean("betaald"));

                inschrijving.add(newToernooiInschrijving);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        ToernooiInschrijving[] inschrijvingArray = new ToernooiInschrijving[inschrijving.size()];
        for (int i = 0; i < inschrijving.size(); i++) {
            inschrijvingArray[i] = inschrijving.get(i);
        }
        return inschrijvingArray;
    }
     
    

      public static boolean exists(Toernooi toernooi, Speler speler) {
         
          String query = "SELECT COUNT(*) as number_of FROM ToernooiInschrijving WHERE toernooiid = " + toernooi.getToernooiid() + " AND spelerid = " +speler.getSpelerid();
        ResultSet result = Database.executeSelectQuery(query);
        try {
            result.next();
            if(result.getInt("number_of") > 0) return true;
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        
        return false;
      }
      
    public static ToernooiInschrijving[] getToernooiInschrijvingen(Toernooi toernooi, boolean betaald) {
        ArrayList<ToernooiInschrijving> inschrijving = new ArrayList<ToernooiInschrijving>();
        ToernooiInschrijving newToernooiInschrijving;
        String query = "SELECT * FROM ToernooiInschrijving WHERE toernooiid = '" + toernooi.getToernooiid() + "' AND betaald = " + betaald;
        ResultSet result = Database.executeSelectQuery(query);
        try {
            while (result.next()) {
                newToernooiInschrijving = new ToernooiInschrijving();
                newToernooiInschrijving.setInschrijvingID(result.getInt("Inschrijvingid"));
                newToernooiInschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
                newToernooiInschrijving.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
                newToernooiInschrijving.setBetaald(result.getBoolean("betaald"));

                inschrijving.add(newToernooiInschrijving);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        ToernooiInschrijving[] inschrijvingArray = new ToernooiInschrijving[inschrijving.size()];
        for (int i = 0; i < inschrijving.size(); i++) {
            inschrijvingArray[i] = inschrijving.get(i);
        }
        return inschrijvingArray;
    }

    public static ToernooiInschrijving getinschrijving(int toernooiid, int spelerid) {
        ToernooiInschrijving inschrijving = null;

        String query = " SELECT * FROM ToernooiInschrijving WHERE toernooiid = " + toernooiid + " AND spelerid =" + spelerid;
        ResultSet result = Database.executeSelectQuery(query);

        try {
            result.next();
            inschrijving = new ToernooiInschrijving();
            inschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
            inschrijving.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
            inschrijving.setBetaald(result.getBoolean("betaald"));

        } catch (SQLException e) {
        }
        return inschrijving;
    }
    
     public static ToernooiInschrijving getInschrijving(int inschrijvingid) {
        ToernooiInschrijving inschrijving = null;

        String query = " SELECT * FROM ToernooiInschrijving WHERE inschrijvingid = '" + inschrijvingid + "'";
        ResultSet result = Database.executeSelectQuery(query);

        try {
            result.next();
            inschrijving = new ToernooiInschrijving();
            inschrijving.setInschrijvingID(result.getInt("inschrijvingid"));
            inschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
            inschrijving.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
            inschrijving.setBetaald(result.getBoolean("betaald"));

        } catch (SQLException e) {
        }
        return inschrijving;
    }

    public boolean insert() {
        boolean succesvol = false;
        String query = "Insert into ToernooiInschrijving (spelerid, toernooiid, betaald) values('"
                + this.getSpeler().getSpelerid() + "','"
                + this.getToernooi().getToernooiid() + "',"
                + this.getBetaald() +")";

        if (Database.executeInsertQuery(query) > 0) {
            //tenminste 1 record inserted
            succesvol = true;
        }

        return succesvol;
    }

    public boolean delete() {
        boolean successful = false;
        String query = "DELETE FROM ToernooiInschrijving where spelerid = '" + this.getSpeler().getSpelerid() + "' AND toernooiid = '" + this.getToernooi().getToernooiid() + "'";
        if (Database.executeDeleteQuery(query) == 1) {
            // er is 1 record verwijderd
            successful = true;
        }
        return successful;
    }
    
     public boolean update() {
        String query = "UPDATE ToernooiInschrijving SET toernooiid = " + this.getToernooi().getToernooiid() + ", spelerid = "+this.getSpeler().getSpelerid() + ", betaald = "+this.getBetaald()+" WHERE inschrijvingid = " + this.getInschrijvingID();
        if (Database.executeUpdateQuery(query) == 1) {
            return true;
        }
        return false;
    }
}
